www.gusucode.com > VC Socket编程实例(服务器端+客户端)-源码程序 > VC Socket编程实例(服务器端+客户端)/Socket编程/chat/NetClient/NetClient.cpp
// NetClient.cpp : Defines the entry point for the console application. // /****************************************************************************** **File: SOCKSrv.cpp **Created: July 30th 2009 **Author: FreeKing **Description: 关于socket编程基于UDP协议的客户端 *******************************************************************************/ #include "stdafx.h" #include <Winsock.h> #include <stdio.h> int main(int argc, char* argv[]) { //加载套接字库 WORD wVersionRequested;//WinSock库的版本号 WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1); err = WSAStartup(wVersionRequested, &wsaData); if( err != 0) { return -1 ; } if( LOBYTE( wsaData.wVersion) != 1 || HIBYTE( wsaData.wVersion) !=1 ) { WSACleanup(); return -2; } //创建套接字 SOCKET sockClient = socket( AF_INET,SOCK_DGRAM, 0 ); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000); char recvBuf[1000]; char sendBuf[1000]; char tempBuf[1000]; int len = sizeof(SOCKADDR); while(1) { //发送数据 printf("Please input data:\n"); gets(sendBuf); sendto(sockClient,sendBuf, strlen(sendBuf )+1, 0 ,(SOCKADDR*)&addrSrv, len); //等待并接受数据 recvfrom(sockClient, recvBuf, 1000, 0, (SOCKADDR*)&addrSrv,&len); if('q' ==recvBuf[0] ) { sendto(sockClient,"q",strlen("q")+1, 0, (SOCKADDR*)&addrSrv,len); printf("Chat end!"); break; } sprintf(tempBuf, "%s say:%s", inet_ntoa(addrSrv.sin_addr), recvBuf); printf("%s\n", tempBuf); } //关闭套接字 closesocket(sockClient); WSACleanup(); return 0; }